package com.ssyt.yt1.day4;

import java.io.File;

/**
 * 递归调用是一种特殊的调用形式，是方法自己调用自己。
 * 
 * @author Administrator
 *
 */
public class Recursion {

	/**
	 * Exception in thread "main" java.lang.StackOverflowError <br/>
	 * 从这里可以看出递归方法必须得有一个出口！
	 */
	public static void test1() {
		System.out.println("hello...");
		test1();
	}

	public static void test2(int param) {
		if (param < 10) {
			System.out.println("hello...");
			test2(++param);
		}
	}

	/**
	 * 求5的阶乘
	 * 
	 * @param number
	 * @return
	 */
	public static int test3(int number) {
		if (number == 1) {
			return 1;
		}
		return number * test3(number - 1);
	}

	/**
	 * 文件类的简单使用
	 */
	public static void test4() {
		// 从File类实例化一个具体的文件对象
		File file = new File("E:\\workspace\\android\\.metadata");
		// 判断是文件还是文件夹
		System.out.println("是否为文件夹：" + file.isDirectory());
		System.out.println("是否为文件：" + file.isFile());
		// 列举文件夹下面信息
		File[] files = file.listFiles();
		for (File f : files) {
			// 得到文件的绝对路径
			System.out.println(f.getAbsolutePath());
		}
	}

	/**
	 * 列举电脑上某个文件夹下的所有文件？（需要提前了解File）
	 */
	public static void test5(File file) {
		// 列举文件夹下面信息
		File[] files = file.listFiles();
		// 遍历文件夹下面的信息，如果是文件就直接把地址打印出来，如果是文件夹还得继续向下查找
		for (File f : files) {
			if (f.isFile()) {
				// file.delete();
				System.out.println(f.getAbsolutePath());
			} else {
				test5(f);
			}
		}
	}

	public static void main(String[] args) {
		// System.out.println(test3(5));

		File file = new File("E:\\workspace");
		test5(file);
	}
}
